print(5 ^ 7)
print(5 ^ 5)  # 和自己异或得到0
print(5 ^ 0)  # 和0异或还是自己

# 只有一个数出现奇数次,其他数出现偶数次
# 原理：异或具有交换律和结合律
# a ^ b = b ^ a 2. 结合律：(a ^ b) ^ c = a ^ (b ^ c)
list = [5, 3, 6, 5, 3, 3, 3, 5, 5, 3, 3, 4, 4]  # 2个4,4个5,6个3
result = 0
for i in list:
    result = result ^ i
print(result)

# 交换两个数，不能使用额外的内存空间

# ａ＝ａ＾ｂ
# ｂ＝ａ＾ｂ     //＝ａ＾ｂ＾ｂ＝ａ
# ａ＝ａ＾ｂ     //＝ａ＾ｂ＾ａ　　　
# 这里最后的a就b来的，因为上一步已经把a赋值给了b
